package me.zhengjie.sqlservice.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import me.zhengjie.mapper.WcsAgvReleaseGoodsMapper;
import me.zhengjie.pojo.entity.WcsAgvReleaseGoods;
import me.zhengjie.sqlservice.WcsAgvReleaseGoodsService;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.List;

@Service
@RequiredArgsConstructor
public class WcsAgvReleaseGoodsServiceImpl extends ServiceImpl<WcsAgvReleaseGoodsMapper, WcsAgvReleaseGoods> implements WcsAgvReleaseGoodsService {
    private final WcsAgvReleaseGoodsMapper wcsAgvReleaseGoodsMapper;

    @Override
    public boolean insert(WcsAgvReleaseGoods wcsAgvReleaseGoods) {
        return wcsAgvReleaseGoodsMapper.insert(wcsAgvReleaseGoods) >0;
    }

    @Override
    public WcsAgvReleaseGoods selectTaskCode(String taskCode) {
        LambdaQueryWrapper<WcsAgvReleaseGoods> wcsAgvReleaseGoodsLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsAgvReleaseGoodsLambdaQueryWrapper.eq(WcsAgvReleaseGoods::getTaskCode, taskCode);
        return wcsAgvReleaseGoodsMapper.selectOne(wcsAgvReleaseGoodsLambdaQueryWrapper);
    }

    @Override
    public boolean updateStatus(Integer id, Integer status) {
        LambdaUpdateWrapper<WcsAgvReleaseGoods> wcsAgvReleaseGoodsLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        wcsAgvReleaseGoodsLambdaUpdateWrapper.set(WcsAgvReleaseGoods::getApplyReleaseGoodsStatus, status)
                .eq(WcsAgvReleaseGoods::getId, id);
        return wcsAgvReleaseGoodsMapper.update(null,wcsAgvReleaseGoodsLambdaUpdateWrapper)>0;
    }

    @Override
    public List<WcsAgvReleaseGoods> selectFloor(Integer floor, int applyReleaseGoodsStatus) {
        LambdaQueryWrapper<WcsAgvReleaseGoods> wcsAgvReleaseGoodsLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsAgvReleaseGoodsLambdaQueryWrapper.eq(WcsAgvReleaseGoods::getFloor,floor)
                .eq(WcsAgvReleaseGoods::getApplyReleaseGoodsStatus,applyReleaseGoodsStatus);
        return wcsAgvReleaseGoodsMapper.selectList(wcsAgvReleaseGoodsLambdaQueryWrapper);
    }

    @Override
    public boolean delete(Integer id) {
        return wcsAgvReleaseGoodsMapper.deleteById(id) >0;
    }


}
